using System; using Shared.SimpleControl.Phone; using System.Collections.Generic; using System.Text; using System.Net.NetworkInformation; namespace Shared.SimpleControl { public class EquipmentPublicClass { public void AlertNotOnline () { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } static object lockFlag = ""; public static bool RomoteLinkState = false; /// /// 检测/连接远程 /// public static void CheckLinkRemote (int status) { //#if DEBUG // Shared.SimpleControl.CommonPage.IsRemote = true; // SmartHome.MqttCommon.StartCloudMqtt (); // return; //#endif lock (lockFlag){ MainPage.tipTime += " Check remote step.1 : " + DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss:ffff") + ";\n"; UserConfig.Instance.internetStatus = status; Console.WriteLine (MainPage.tipTime); #if wallon return; #endif if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) { return; } new System.Threading.Thread (async () => { try { if (status == 0) { Application.RunOnMainThread (() => { MainPage.AddTip (Language.StringByID (R.MyInternationalizationString.InternetStatusTip)); UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); } else { if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) { return; } Application.RunOnMainThread (() => { if (UserMiddle.LinkStatusTip.BackgroundColor == SkinStyle.Current.DelColor) { UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.MainColor; } }); var localFileList = IO.FileUtils.ReadFiles (); var gateWayList = localFileList.FindAll ((obj) => { return (obj.StartsWith ("Equipment_")) && ( obj.Split ('_') [1].ToString () == DeviceType.OnePortBus.ToString () || obj.Split ('_') [1].ToString () == DeviceType.RCU.ToString () || obj.Split ('_') [1].ToString () == DeviceType.SuperWireless.ToString () || obj.Split ('_') [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()); }); bool canRemote = false; MainPage.tipTime += " Check remote step.2 : " + DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss:ffff") + ";\n"; RomoteLinkState = CommonPage.IsRemote; CommonPage.IsRemote = false; foreach (var gatewayFileName in gateWayList) { var tempStrings = gatewayFileName.Split ('_'); var gateWayString = CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (gatewayFileName)); var common = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); if (common != null) { if (common.MAC.Replace (".", "") == UserConfig.Instance.GatewayMAC.Replace (".", "")) { canRemote = true; if (status == 2) { CommonPage.FindGateway = true; //var result = Control.ControlBytesSendHasReturn (Command.ReadDeviceMac, common.SubnetID, common.DeviceID, new byte [] { }, false); var result = Control.ControlBytesSendHasReturn (Command.ReadGateway, common.SubnetID, common.DeviceID, new byte [] { (byte)new Random ().Next (255), (byte)new Random ().Next (255) }); CommonPage.FindGateway = false; if (result != null) { canRemote = false; var mac0 = CommonPage.byteToHex16 (result [5]) + "." + CommonPage.byteToHex16 (result [6]) + "." + CommonPage.byteToHex16 (result [7]) + "." + CommonPage.byteToHex16 (result [8]) + "." + CommonPage.byteToHex16 (result [9]) + "." + CommonPage.byteToHex16 (result [10]) + "." + CommonPage.byteToHex16 (result [11]) + "." + CommonPage.byteToHex16 (result [12]); //var mac0 = CommonPage.byteToHex16 (result [0]) + "." + CommonPage.byteToHex16 (result [1]) + "." + CommonPage.byteToHex16 (result [2]) + "." + CommonPage.byteToHex16 (result [3]) + "." + CommonPage.byteToHex16 (result [4]) + "." + CommonPage.byteToHex16 (result [5]) + "." + CommonPage.byteToHex16 (result [6]) + "." + CommonPage.byteToHex16 (result [7]); if (common.MAC == mac0) { var gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, common.SubnetID, common.DeviceID, new byte [] { }); if (gatewayBytes != null) { common.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 1, 20).Trim ('\0'); common.Remote_ProjectName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 21, 20).Trim ('\0'); common.Remote_UserName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 41, 8).Trim ('\0'); common.Remote_Password = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 49, 8).Trim ('\0'); //IO.FileUtils.SaveEquipmentMessage (gatewayDevice); var requestJson2 = @"{'Token':'" + MainPage.LoginUser.LoginTokenString + "','MAC':'" + common.MAC + "','Password':'" + common.Remote_Password + "'}"; var revertObj2 = MainPage.RequestHttps ("UpdateRemoteSwitchPassword", requestJson2, true, false); return; } else { if (Shared.SimpleControl.CommonPage.IsRemote) { Shared.SimpleControl.CommonPage.IsRemote = false; gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, common.SubnetID, common.DeviceID, new byte [] { }); if (gatewayBytes != null) { common.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 1, 20).Trim ('\0'); common.Remote_ProjectName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 21, 20).Trim ('\0'); common.Remote_UserName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 41, 8).Trim ('\0'); common.Remote_Password = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 49, 8).Trim ('\0'); //IO.FileUtils.SaveEquipmentMessage (gatewayDevice); var requestJson2 = @"{'Token':'" + MainPage.LoginUser.LoginTokenString + "','MAC':'" + common.MAC + "','Password':'" + common.Remote_Password + "'}"; var revertObj2 = MainPage.RequestHttps ("UpdateRemoteSwitchPassword", requestJson2, true, false); return; } } } Application.RunOnMainThread (() => { UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.LinkStatusTipColor; MainPage.Loading.Hide (); }); Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); await SmartHome.MqttCommon.Close (); return; } } } else { break; } } } } MainPage.tipTime += " Check remote step.3 : " + DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss:ffff") + ";\n"; if (canRemote) { if (!string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.MAC)) { Shared.SimpleControl.CommonPage.IsRemote = true; await SmartHome.MqttCommon.StartCloudMqtt (); } } } } catch (Exception ex) { Console.WriteLine ("CheckLinkRemote : " + ex.ToString ()); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }) { IsBackground = true }.Start (); } } } }